package com.tang.crm.controller;

import com.sun.org.apache.xpath.internal.operations.Mod;
import com.tang.crm.base.BaseController;
import com.tang.crm.base.ResultInfo;
import com.tang.crm.entity.Module;
import com.tang.crm.service.ModuleService;
import com.tang.crm.vo.TreeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * 菜单管理
 * @author SHIRELY阳
 */
@Controller
@RequestMapping("/module")
public class ModuleController extends BaseController {

    @Autowired
    private ModuleService moduleService;

    /**
     * 进入资源管理页面
     * @return
     */
    @RequestMapping("/index")
    public String index(){
        return "module/module";
    }

    /**
     * 打开添加资源的页面
     * @param grade
     * @param parentId
     * @param request
     * @return
     */
    @RequestMapping("/toAddModulePage")
    public String toAddModulePage(Integer grade, Integer parentId, HttpServletRequest request){
        // 将数据设置到请求域中
        request.setAttribute("grade", grade);
        request.setAttribute("parentId", parentId);
        return "module/add";
    }

    /**
     * 查询所有的资源列表
     * @return
     */
    @RequestMapping("/queryAllModules")
    @ResponseBody
    public List<TreeVo> selectAllModule(Integer roleId){
        return moduleService.selectAllModule(roleId);
    }

    /**
     * 进入授权界面
     * @param roleId
     * @param request
     * @return
     */
    @RequestMapping("/toAddGrantPage")
    public String toAddGrantPage(Integer roleId, HttpServletRequest request){
        // 将需要授权的角色ID设置到请求域中
        request.setAttribute("roleId", roleId);
        return "role/grant";
    }

    /**
     * 打开修改资源的页面
     * @param request
     * @param id
     * @return
     */
    @RequestMapping("/toUpdateModulePage")
    public String toUpdateModulePage(HttpServletRequest request, Integer id){
        request.setAttribute("module", moduleService.getById(id));
        return "module/update";
    }

    /**
     * 查询资源菜单
     * @return
     */
    @RequestMapping("/list")
    @ResponseBody
    public Map<String, Object> selectModuleList(){
        return moduleService.selectModuleList();
    }

    @PostMapping("/add")
    @ResponseBody
    public ResultInfo saveModule(Module module){
        moduleService.saveModule(module);
        return success("添加资源成功");
    }

    /**
     * 更新资源
     * @param module
     * @return
     */
    @PostMapping("/update")
    @ResponseBody
    public ResultInfo updateModule(Module module){
        moduleService.updateModule(module);
        return success("更新资源成功");
    }

    /**
     * 删除资源
     * @param moduleId
     * @return
     */
    @PostMapping("/delete")
    @ResponseBody
    public ResultInfo deleteModule(@RequestParam("id") Integer moduleId){
        moduleService.deleteModule(moduleId);
        return success("删除资源成功");
    }
}
